package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.common.vo.PageVo;
import com.dd.cloud.user.entity.doctor.DoctorOrderIncomeDetail;
import com.dd.cloud.user.entity.order.OrderPay;
import com.dd.cloud.user.req.doctor.*;
import com.dd.cloud.user.res.doctor.*;

import javax.servlet.http.HttpServletResponse;

/**
 * @author Lx
 * @version 1.0
 */
public interface IDoctorOrderIncomeDetailService extends IService<DoctorOrderIncomeDetail> {
    /**
     * 查询医生收入明细 年统计
     *
     * @param req
     * @return
     */
    PageVo<DoctorOrderIncomeDetailListRes> queryDoctorOrderIncomeDetailList(DoctorOrderIncomeDetailListReq req);

    /**
     * 查询医生收入明细 月明细
     *
     * @param req
     * @return
     */
    PageVo<DoctorOrderIncomeDetailMonthListRes> queryDoctorOrderIncomeDetailMonthList(DoctorOrderIncomeDetailMonthListReq req);

    /**
     * 查询医生收入记录 运营后台
     *
     * @param req
     * @return
     */
    PageVo<DoctorOrderIncomeDetailPageSystemRes> queryDoctorOrderIncomeDetailPageSystem(DoctorOrderIncomeDetailPageSystemReq req);

    /**
     * 导出医生收入记录 运营后台
     *
     * @param response
     * @param req
     */
    void exportDoctorOrderIncomeDetailSystemExcel(HttpServletResponse response, DoctorOrderIncomeDetailPageSystemReq req);

    /**
     * 通过处方编号生成医生订单收入
     *
     * @param orderPay
     */
    void addDoctorOrderIncomeDetail(OrderPay orderPay);

    /**
     * 查询医生提现收入信息
     *
     * @param docId
     * @return
     */
    DoctorWithdrawIncomeInfoRes queryDoctorWithdrawIncomeInfo(Integer docId);

    /**
     * 医生收入入账成功
     *
     * @param tencode
     * @param doctorId
     */
    void doctorOrderIncomeEntrySuc(String tencode, Integer doctorId);

    /**
     * 问政订单入账成功
     *
     * @param orderPay
     */
    void addConsultOrderIncomeDetail(OrderPay orderPay);

    /**
     * 手动重置收益记录
     */
    void setAllOrderToIncomeDetail();

    /**
     * 查询医生收益
     *
     * @param req
     * @return IPage<DoctorOrderIncomePageRes>
     */
    PageVo<DoctorOrderIncomePageRes> queryDoctorIncomePage(DoctorOrderIncomePageReq req);

    /**
     * 查询提现记录
     *
     * @param req
     * @return
     */
    PageVo<DoctorWithdrawRecordPageSystemRes> queryWithdrawRecordPage(DoctorWithdrawPageReq req);
}
